home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / Shaders / RCShaders / RCDented.sl < prev    next >
Encoding:
Text File  |  1995-03-22  |  487 b   |  23 lines

  1. /* Listing 16.16  Displacement shader to dent a surface*/
  2. /*
  3.  * dented(): Create a worn surface.
  4.  */
  5. displacement 
  6. RCDented (
  7.     float    Km    = 1.0 )
  8. {
  9.     float    size       = 1.0, 
  10.         magnitude = 0.0, 
  11.         i;
  12.     point P2;
  13.  
  14.     P2 = transform("shader", P);
  15.     for (i = 0; i < 6.0; i += 1.0) {
  16.         /* Calculate a simple fractal 1/f noise function */
  17.         magnitude += abs(.5 - noise(P2 * size)) / size;
  18.         size *= 2.0;
  19.     }
  20.     P2 = P - normalize(N) * (magnitude * magnitude * magnitude) * Km;
  21.     N = calculatenormal(P2);
  22. }
  23.